﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EntitiesLayer
{
    public class Planeta : CuerpoCeleste
    {
        private decimal distanciaMediaSol;
        public decimal DistanciaMediaSol
        {
            get { return distanciaMediaSol; }
            set { distanciaMediaSol = value; }
        }

        private TimeSpan duracionAno;
        public TimeSpan DuracionAno
        {
            get { return duracionAno; }
            set { duracionAno = value; }
        }
        private int cantidadSatelites;
        public int CantidadSatelites
        {
            get { return cantidadSatelites; }
        }
        private readonly Lazy<IList<Satelite>> lazyLoadSatelite;
        public IList<Satelite> ListaSatelite
        {
            get { return lazyLoadSatelite!=null?lazyLoadSatelite.Value:null; }
        }

        public Planeta(string nombre, decimal masa, decimal temperaturaMedia, TimeSpan duracion,
            decimal distanciaMedia, int cantidadSatelites, TimeSpan duracionAno, Lazy<IList<Satelite>> sateliteloader = null,
             Lazy<IList<Mission>> missionDelegate = null, int id=0)
            : base(nombre, masa, temperaturaMedia, duracion, missionDelegate, id)
        {

            DistanciaMediaSol = distanciaMedia;
            this.cantidadSatelites = cantidadSatelites;
            lazyLoadSatelite = sateliteloader;
            DuracionAno = duracionAno;
           
        }

        public override string ToString()
        {
            return base.ToString()
                +"\nDistancia media del sol: "+DistanciaMediaSol.ToString()
                +"\nCantidad de satelites: "+CantidadSatelites.ToString()
                +"\nDuracion años: "+DuracionAno.ToString();
        }

    }
}
